<?php

namespace Cekurte;
	
/**
 * Classe responsável pela utilização de métodos úteis para a aplicação
 * 
 * @author 	João Paulo Cercal
 * @version 1.0
 */
class App
{
	/**
	 * @var Zend_Form Armazena os formulários do sistema
	 */
    private static $form;
    
    /**
	 * @var Model Armazena os modelos do sistema
	 */
    private static $model;
    
    /**
     * Retira o acesso ao método construtor
     *
     * @author 	João Paulo Cercal
     * @version 1.0
     */
    private function __construct() { }
    
	/**
     * Recupera um formulário fazendo uso do padrão de projeto singleton
     * 
     * @author 	João Paulo Cercal
     * @version 1.0
     * 
     * @return 	Zend_Form
     */
    public static function getForm( $form ) 
    {
    	if( !empty( $form ) && is_string( $form ) )
		{
			if( !(self::$form[ $form ] instanceof \Zend_Form) )
			{
				$class_name 			= "Application_Form_{$form}";
    	
    			self::$form[ $form ]	= new $class_name();
			}
			
			return self::$form[ $form ];
		}
		
		return false;
    }
    
	/**
     * Recupera um modelo fazendo uso do padrão de projeto singleton
     * 
     * @author 	João Paulo Cercal
     * @version 1.0
     * 
     * @return 	Model
     */
    public static function getModel( $model ) 
    {
    	if( !empty( $model ) && is_string( $model ) )
		{
			if( !(self::$model[ $model ] instanceof \Cekurte\Model) )
			{
				$class_name 			= "Application_Model_{$model}";
    	
    			self::$model[ $model ]	= new $class_name();
			}
			
			return self::$model[ $model ];
		}
		
		return false;
    }
}

?>
